package com.webauto.test_case;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;

import com.webauto.data_driver.ExcelUtil;
import com.webauto.log.Log;
import com.webauto.po.PO;
import com.webauto.util.Constant;
import com.webauto.selenium.ManagerUtil;
import com.webauto.selenium.SeleniumDriverUtil;
import com.webauto.selenium.UseElementUtil;

/**
 * PS:用例基类
 * @author lkk
 *
 */
public class BaseCase {
	//浏览器驱动对象
	public static WebDriver driver;
	
	/**
	 * PS:套件初始化方法(初始化浏览器驱动对象)
	 * @param browser 浏览器名称
	 * @param headless 是否使用无头模式
	 */
	@BeforeSuite
	@Parameters({"browser","headless"})//从testNg.xml获取参数
	public void beforeSuite(@Optional("chrome")String browser,@Optional("no")String headless) {//@Optional 如果没取到默认使用的参数
		//为浏览器驱动赋值
		SeleniumDriverUtil.getDriver(browser,headless);	
		ManagerUtil.maximize();
		ManagerUtil.implicitlyWait(3);
	}
	
	/**
	 * PS:套件结束前方法(关闭浏览器驱动对象)
	 */
	@AfterSuite
	public void afterSuite() {
		SeleniumDriverUtil.quit();
		// 写入数据
		Log.info("-------开始写入数据--------------");
		ExcelUtil.batchWriteData(Constant.EXCEL_PATH);
		Log.info("-------写入数据成功--------------");
	}
	
	/**
	 * PS:测试方法执行前操作
	 */
	@BeforeMethod
	public void beforeMethod() {
		//执行前先登录
		SeleniumDriverUtil.go("http://localhost:8080/login");
		UseElementUtil.sendKeys(By.id("username"), "admin");
		UseElementUtil.sendKeys(By.id("password"), "1");
		UseElementUtil.sendKeys(By.id("imageCode"), "1234");
		UseElementUtil.click(By.id("login"));
		ManagerUtil.sleep(1500);
	}
}
